//
// Copyright (C) [2024] Xingyun Integrated Circuit, Inc.
//
// GreenCode was a private technology asset of Xingyun Integrated Circuit， Inc （Confidential）
//  Author: Shawn.Tan
//  Date : 2025.10.28
//
//  History : Initial Version 2025.10.28
//
//
#ifndef Green_VectorLayout_H
#define Green_VectorLayout_H

#include <cmath>

#include "Defines.h"

namespace Green {

  /*!
    \class VectorLayout
    \brief Struct defining the layout of vector registers within the context of a vector instruction.
  */
  struct VectorLayout {
    uint32 mElemSize; //!< The size in bits of each vector register element
    uint32 mElemCount; //!< The number of elements per vector register group
    uint32 mFieldCount; //!< The number of fields per structure in memory
    uint32 mRegCount; //!< The number of registers per vector register group
    uint32 mRegIndexAlignment; //!< A power of 2 to which vector register indices must be aligned
    bool mIsIllegal; //!< Flag indicating whether the layout is illegal
  };

}

#endif  // Green_VectorLayout_H
